<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义对象</title>
</head>
<body>
<script>
    /*自定义对象
    *创建对象  使用构造函数new 使用new关键字调用函数，是构造函数constructor
    *    构造函数是专门用来创建对象的函数
    *    用typeof检查对象时，返回object
    *    1.在对象中保存的值称为属性 向对象添加属性  语法：对象.属性名=属性值;
    *    2.读取对象的语法                         语法：对象.属性名     如果读取的对象中没有属性。不会报错而是返回Udefined
    *    3.修改对象属性                           语法:对象.属性名=新值
    *    4.删除对象                               语法:delete 对象.属性名
    *   属性名:
    *       对象的属性名不强制要求遵守标识符的规范
    *       如果要使用特殊的属性名不能采用.的方式进行操作 需要另一种方式:
    *       语法:对象["属性名"]=属性值
    *           使用[]这种形式操作属性，更加灵活，在[]中传递一个变量 这样变量值是多少就会读取哪个属性
    *   属性值
    *       js对象的属性值，可以是任意的数据类型 甚至可以是一个对象
    *   in运算符
    *       通过该运算符可以检查一个对象中是否含有指定的属性 如果有则返回true 如果没有返回false
    *       语法:"属性名" in 对象
    *
    * */
    //举例1
    var obj=new Object();
    // console.log(typeof obj);//返回object
    obj.name="孙悟空";//向obj中添加name属性
    obj.gender="男";//向obj中添加gender属性
    obj.age=110;//向obj中添加age属性
    //读取对象的语法  语法：对象.属性名
    //如果读取的对象中没有属性。不会报错而是返回Udefined
    console.log(obj.name);
    console.log(obj.hello);//返回一个值undefined
    //举例2
    obj.name="tom";//修改对象属性
    console.log(obj.name); //读取对象的属性
    delete obj.name;//删除对象的属性
    //举例3
    obj["123"]=456;//特殊的属性名
    obj["nihao"]="你好";
    var n="123";
    console.log(obj[n]);
    //举例4 js对象的属性值，可以是任意的数据类型
    obj.test1=123; //数值
    obj.test2="789";//字符串
    obj.test3=null;//null
    obj.test4=undefined;//undefined
    obj.test5=true;//boolean
    console.log(obj.test1);
    console.log(obj.test2);
    console.log(obj.test3);
    console.log(obj.test4);
    console.log(obj.test5);
    //举例5 js对象的属性值，可以是任意的数据类型 也可以是对象
    var  obj=new Object();
    var  obj2=new Object();
    obj2.name="猪八戒";
    obj.test=obj2
    console.log(obj.test.name);
   //举例5 检查obj中是否含有test10
    var  obj=new Object();
    var  obj2=new Object();
    obj2.name="猪八戒";
    obj.test=obj2
    console.log("test10" in obj);//返回false
    console.log("name" in obj2);//返回true

</script>
</body>
</html>